package com.knife.interfaces.annotations;


import com.knife.interfaces.aspect.KnifeInterfaceLogAdvice;
import com.knife.interfaces.constants.KnifeInterfaceCodeEnum;
import com.knife.interfaces.helper.impl.KnifeAopInterfaceLogHelperImpl;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 1 用于controller上的日志监控注解，可记录请求的url等信息
 * 2 通过AOP进行日志监控,{@link KnifeInterfaceLogAdvice}实现拦截
 * 3 监控生成日志的处理通过{@link KnifeAopInterfaceLogHelperImpl}实现
 *
 * @author: tianhao.luo@hand-china.com 2021/6/28  上午10:29
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface KnifeInterfaceLog {
    /**
     * 是否需要进行请求日志的记录
     *
     * @return 默认为需要记录
     */
    boolean value() default true;

    /**
     * 接口编码及描述
     *
     * @return 接口编码及描述枚举
     */
    KnifeInterfaceCodeEnum interfaceEnum();
}
